package com.scrm.server.wx.cp.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.scrm.api.wx.cp.dto.FissionExpandDTO;
import com.scrm.api.wx.cp.dto.WxFissionTaskPageDTO;
import com.scrm.api.wx.cp.dto.WxFissionTaskSaveDTO;
import com.scrm.api.wx.cp.dto.WxFissionTaskUpdateDTO;
import com.scrm.api.wx.cp.entity.WxFissionTask;
import com.scrm.api.wx.cp.vo.WxFissionCountConditionVO;
import com.scrm.api.wx.cp.vo.WxFissionTaskCountVO;
import com.scrm.api.wx.cp.vo.WxFissionTaskVO;

import java.util.List;

/**
 * 企微应用宝-裂变任务信息 服务类
 * @author xxh
 * @since 2022-03-21
 */
public interface IWxFissionTaskService extends IService<WxFissionTask> {


    /**
     * 分页查询
     * @author xxh
     * @date 2022-03-21
     * @param dto 请求参数
     */
    IPage<WxFissionTaskVO> pageList(WxFissionTaskPageDTO dto);

    /**
     * 根据id查询
     * @author xxh
     * @date 2022-03-21
     * @param id 主键
     */
    WxFissionTaskVO findById(String id);


    /**
     * 新增
     * @author xxh
     * @date 2022-03-21
     * @param dto 请求参数
     * @return com.scrm.api.wx.cp.entity.WxFissionTask
     */
    WxFissionTask save(WxFissionTaskSaveDTO dto);

     /**
      * 修改
      * @author xxh
      * @date 2022-03-21
      * @param dto 请求参数
      * @return com.scrm.api.wx.cp.entity.WxFissionTask
      */
    WxFissionTask update(WxFissionTaskUpdateDTO dto);


    /**
     * 删除
     * @author xxh
     * @date 2022-03-21
     * @param id 企微应用宝-裂变任务信息id
     */
    void delete(String id);

    /**
     * 校验是否存在
     * @author xxh
     * @date 2022-03-21
     * @param id 企微应用宝-裂变任务信息id
     * @return com.scrm.api.wx.cp.entity.WxFissionTask
     */
    WxFissionTask checkExists(String id);

    /**
     * 校验是否存在
     * @author xxh
     * @date 2022-03-21
     * @param id 企微应用宝-裂变任务信息id
     * @return com.scrm.api.wx.cp.entity.WxFissionTask
     */
    WxFissionTask checkExistsIncludeDel(String id);

    /**
     * 结束任务
     * @param id
     */
    void over(String id);

    /**
     * 活动数据统计
     * @param conditionVO
     * @return
     */
    WxFissionTaskCountVO countByCondition(WxFissionCountConditionVO conditionVO);

    /**
     * 推广（发消息）
     * @param dto
     */
    void expand(FissionExpandDTO dto);

    /**
     * 查询没结束的任务
     * @param extCorpId
     * @return
     */
    List<String> findUnOverTask(String extCorpId);
}
